﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Windows.Forms;

namespace Factory
{
    class SocioDAO
    {
        public static IList<Socio> obtemListaSocios()
        {
            try
            {
                DAOBase m_cnn = new DAOBase();

                #region Query
                string query =
                    @"SELECT ID
                            ,CapitalInvestido
      ,PercentualFactory
      ,CPF
      ,Nome
  FROM Socio";
                #endregion

                SqlCommand cmd = new SqlCommand(query, m_cnn.CreateConnection());

                SqlDataReader dr = cmd.ExecuteReader();

                IList<Socio> Socios = ReaderToObjects(dr);

                return Socios;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
                return null;
            }
        }

        public static IList<Socio> ReaderToObjects(IDataReader reader)
        {
            if (reader.IsClosed)
            {
                throw new ArgumentException("O DataReader fornecido já estava fechado.");
            }

            int ID = reader.GetOrdinal("ID");
            int CPF = reader.GetOrdinal("CPF");
            int CapitalInvestido = reader.GetOrdinal("CapitalInvestido");
            int Nome = reader.GetOrdinal("Nome");
            int PercentualFactory = reader.GetOrdinal("PercentualFactory");



            IList<Socio> result = new List<Socio>();

            while (reader.Read())
            {
                Socio c = new Socio(
                    reader.GetInt32(ID),
                    reader.GetDouble(CapitalInvestido),
                    reader.GetDouble(PercentualFactory),
                    reader.GetString(CPF),
                    reader.GetString(Nome)
                    );
                result.Add(c);
            }
            return result;
        }

//        public int CadastrarSocio(Socio Socio)
//        {
//            int resultado = 0;

//            try
//            {

//                DAOBase m_cnn = new DAOBase();

//                #region query
//                string query = @"INSERT INTO Socio
//                                              VALUES
//                                               (@nome,@documento,@limite,@especial,@juridica)";

//                #endregion

//                SqlCommand cmd = new SqlCommand(query, m_cnn.CreateConnection());

//                //Parametros de Usuario
//                cmd.Parameters.Add(new SqlParameter("nome", Socio.nome));
//                cmd.Parameters.Add(new SqlParameter("documento", Socio.cpf));
//                cmd.Parameters.Add(new SqlParameter("limite", Socio.limiteCredito));
//                cmd.Parameters.Add(new SqlParameter("especial", Socio.especial));
//                cmd.Parameters.Add(new SqlParameter("juridica", Socio.juridica));


//                resultado = cmd.ExecuteNonQuery();

//                m_cnn.DestroyConnection();

//            }

//            catch (Exception ex)
//            {
//                //writer.WriteLine("ApplicationException Message: {0}", ex.Message);
//            }

//            return resultado;
//        }

//        public IList<Socio> ObterSocios()
//        {
//            try
//            {
//                DAOBase m_cnn = new DAOBase();

//                #region Query
//                string query =
//                    @"SELECT ID, Nome, Documento, LimiteAprovado, FlagSocioEspecial,FlagJuridica
//                FROM Socio";
//                #endregion

//                SqlCommand cmd = new SqlCommand(query, m_cnn.CreateConnection());

//                SqlDataReader dr = cmd.ExecuteReader();

//                IList<Socio> Socios = ReaderToObjects(dr);

//                return Socios;
//            }
//            catch (Exception e)
//            {
//                MessageBox.Show(e.Message);
//                return null;
//            }
//        }

//        public int atualizarSocio(Socio Socio)
//        {
//            int juridica = Socio.juridica == true ?  1 :  0;
//            int especial = Socio.especial == true ?  1 :  0;

//            int resultado = 0;

//            try
//            {
//                DAOBase m_cnn = new DAOBase();

//                #region query
//                string query = @"UPDATE Socio
//                                   SET Nome =@nome
//                                      ,Documento = @documento
//                                      ,LimiteAprovado = @limite
//                                      ,FlagSocioEspecial = @especial
//                                      ,FlagJuridica = @juridica
//                                 WHERE ID=@ID";

//                #endregion

//                SqlCommand cmd = new SqlCommand(query, m_cnn.CreateConnection());

//                //Parametros de Usuario
//                cmd.Parameters.Add(new SqlParameter("ID", Socio.id));
//                cmd.Parameters.Add(new SqlParameter("nome", Socio.nome));
//                cmd.Parameters.Add(new SqlParameter("documento", Socio.cpf));
//                cmd.Parameters.Add(new SqlParameter("limite", Socio.limiteCredito));
//                cmd.Parameters.Add(new SqlParameter("especial", especial));
//                cmd.Parameters.Add(new SqlParameter("juridica", juridica));


//                resultado = cmd.ExecuteNonQuery();

//                m_cnn.DestroyConnection();

//            }

//            catch (Exception ex)
//            {
//                //writer.WriteLine("ApplicationException Message: {0}", ex.Message);
//            }

//            return resultado;
//        }

//        public Socio ObterSociosPorId(int id)
//        {
//            try
//            {
//                DAOBase m_cnn = new DAOBase();

//                #region Query
//                string query =
//                    @"SELECT ID, Nome, Documento, LimiteAprovado, FlagSocioEspecial,FlagJuridica
//                FROM Socio WHERE ID=@id ";
//                #endregion

//                SqlCommand cmd = new SqlCommand(query, m_cnn.CreateConnection());
//                cmd.Parameters.Add(new SqlParameter("id", id));
//                SqlDataReader dr = cmd.ExecuteReader();

//                IList<Socio> Socios = ReaderToObjects(dr);

//                return Socios.FirstOrDefault();
//            }
//            catch (Exception e)
//            {
//                MessageBox.Show(e.Message);
//                return null;
//            }
//        }

//        public int ExcluirSocio(int idSocio)
//        {
//            int resultado = 0;

//            try
//            {
//                DAOBase m_cnn = new DAOBase();

//                #region query
//                string query = @"DELETE FROM Socio
//                                 WHERE ID=@ID";

//                #endregion

//                SqlCommand cmd = new SqlCommand(query, m_cnn.CreateConnection());
//                cmd.Parameters.Add(new SqlParameter("ID", idSocio));

//                resultado = cmd.ExecuteNonQuery();

//                m_cnn.DestroyConnection();

//            }

//            catch (Exception ex)
//            {

//            }

//            return resultado;
//        }
    }
}
